<script setup lang="ts">
import { ref, onMounted } from 'vue'
import * as echarts from 'echarts'
import chinaJSON from './china.json'

// 注册地图
echarts.registerMap('china', chinaJSON as any)
const map = ref()

onMounted(() => {
  let myCharts = echarts.init(map.value)

  // 设置实例
  myCharts.setOption({
    geo: {
      map: 'china', // 中国地图
      roam: true, // 开启鼠标缩放
      // 地图位置
      left: 50,
      top: 100,
      bottom: 0,
      right: 50,
      // 地图上的文字设置
      label: {
        show: true, // 文字渲染
        color: '#fff',
        fontSize: 14,
        // rotate: 20
      },
      // 每一个多边形样式
      itemStyle: {
        areaColor: 'skyblue',
        color: 'red',
        opacity: 0.8,
      },
      // 地图高亮
      emphasis: {
        itemStyle: {
          color: 'red',
        },
        label: {
          color: '#fff',
          fontSize: 20,
        },
      },
    },
    // 布局
    grid: {
      left: 0,
      right: 0,
      top: 0,
      bottom: 0,
    },
    series: [
      {
        type: 'lines', // 航线
        data: [
          {
            coords: [
              [116.405285, 39.904989], // 起点
              [119.306239, 26.075302], // 终点
            ],
            // 统一样式设置
            lineStyle: {
              color: 'orange',
              width: 5,
            },
          },
        ],
        // 特效
        effect: {
          show: true,
          symbol: 'pin',
          symbolSize: 30,
          color:'#fff'
        },
      },
    ],
  })
})
</script>

<template>
  <div class="map" ref="map"></div>
</template>

<style scoped></style>
